package enterprise.web.tookit.user;

import javax.ejb.EJBException;
import javax.ejb.Remote;

import enterprise.web.tookit.exception.ValidationException;

@Remote
public interface UserBeanRemote {

	public void createUser(User user);

	public void updatePasswordUser(User user);

	public void dropUser(User user);

	public void addRolesToUser(User user);

	public void createRoles(User user);

	/**
	 * @since 24/12/2012
	 * 
	 * @author regis rocha
	 * 
	 * @description Verifica se existe algum usuario com o email informado por argumento. Caso ja existe um
	 *              valor boolean TRUE sera retornado. Caso contrario ou seja nao exista usuario para o email
	 *              informado sera retornado um valor boolean FALSE.
	 * 
	 * @param String
	 * 
	 * @return boolean - FALSE caso NAO exista nenhum usuario com o email informado.
	 */
	public boolean emailExist(String email);

	/**
	 * @since 24/01/2013
	 * 
	 * @author regis rocha
	 * 
	 * @description Obtem a Role Master, que tera acesso a todas as funcionalidades do sistema.
	 * 
	 * @return UserRole
	 */
	public UserRole getRoleMaster();

	/**
	 * @since 27/02/2013
	 * 
	 * @author regis rocha
	 * 
	 * @description Processo de recuperacao de senha, onde sera enviado para uma fila jms que o mesmo ira
	 *              acionar a funcionalidade de envio de email para o destinatario previamente cadastrado pelo
	 *              usuario.
	 * 
	 * @param String
	 * 
	 * @throws ValidationException
	 *             - Caso ocorra algum erro de validacao.
	 * 
	 */
	public void recoverPassword(String username) throws ValidationException, EJBException;

}
